package com.yn.iotxiao.sql.mapper;

import com.yn.iotxiao.model.UInfo;
import com.yn.iotxiao.sql.entity.Device.DeviceInfo;
import com.yn.iotxiao.sql.entity.Group.GroupDevice;
import com.yn.iotxiao.sql.entity.Group.GroupInfo;
import com.yn.iotxiao.sql.entity.User.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface GroupMapper extends BaseMapper<GroupInfo>{

    int putDevice(List<GroupDevice> list);

    /**
     * 获取不在分组中的设备
     * @param groupId 分组ID
     * @return 设备列表
     */
    List<DeviceInfo> getDeviceOutGroup(String groupId);

    /**
     * 获取分组中的所有设备
     * @param groupId
     * @return
     */
    List<DeviceInfo> getGroupDevices(String groupId);

    /**
     * 获取分组中的设备，支持搜索，分页
     * @param groupId 分组ID
     * @param searchKey 搜索关键字
     * @param page 分页
     * @param pageSize 每页数量
     * @return
     */
    List<DeviceInfo> getDeviceInGroup(String groupId, String searchKey, int page, int pageSize);

    /**
     * 根据条件获取分组中设备数量
     * @param groupId 分组ID
     * @return
     */
    int getDeviceInGroupTotal(String groupId);

    /**
     * 从权限组移除设备
     * @param groupId 分组ID
     * @param deviceIds 需要移除的设备ID，数组
     * @return
     */
    int removeDeviceFromGroup(String groupId, List<String> deviceIds);

    /**
     * 根据类型获取权限组
     * @param type 权限组类型
     * @return
     */
    GroupInfo getWithType(String type);

    /**
     * 权限组写入人员
     * @param uid 用户ID
     * @param type 用户类型
     * @param groupId 权限组ID
     * @return
     */
    int putUser(String uid, String type,String groupId,String deviceIds);


    /**
     * @param groupId 分组ID
     * @param searchKey 搜索关键字
     * @param page 分页
     * @param pageSize 每页显示数量
     * @return
     */
    List<UInfo> getUserInGroup(String groupId, String searchKey, int page, int pageSize);

    /**
     * @param groupId 分组ID
     * @param searchKey 搜索关键字
     * @return
     */
    int getUserInGroupTotal(String groupId, String searchKey);
}
